home *** CD-ROM | disk | FTP | other *** search
- #!/usr/local/bin/perl
-
- $mailprog = '/bin/sendmail';
-
- # valid referers
- @referers = ('.*shopwizard_order\.cgi', '.*method\.html', '.*order2\.html', '.*order3\.html', '.*order4\.html', '.*shopfactory_order\.cgi', '.*VueltaOk\.html', '.*authorized\.html', '.*vuelta\.exe', '.*customerdtl\.html', '.*deliverydtl\.html', '.*ordernav\.html');
-
- # required fields
- #@required = ("shipping_region", "shipping_method", "tax_area");
-
- &check_referer;
- &parse_form;
- &check_required;
- &get_date;
- &send_email;
- if($FORM{'redirect_only'} ne "true") {
- &print_html;
- } else {
- &redirect;
- }
-
- sub get_date {
- @days = ('Sunday','Monday','Tuesday','Wednesday','Thursday','Friday','Saturday');
- @months = ('January','February','March','April','May','June','July','August','September','October','November','December');
-
- ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime(time);
- if ($hour < 10) { $hour = "0$hour"; }
- if ($min < 10) { $min = "0$min"; }
- if ($sec < 10) { $sec = "0$sec"; }
-
- $date = "$days[$wday], $months[$mon] $mday, $year at $hour\:$min\:$sec";
- }
-
- sub send_email {
-
- if($FORM{'recipient'} eq "") {
- print "Content-type: text/html\n\n";
-
- print "<body";
- &body_attributes;
- print ">\n";
- print "<center><img src=\"lockssl-on.gif\"></center><br>\n";
- print "<br><br><br><br><center>\n";
- print "<font size=\"+2\">$FORM{'ln_email_required'}</font><br><br>\n";
- print "</center>";
- print "</body>\n</html>";
- die;
- }
-
- $FORM{'order_email'} =~ s/\\n/\n/g;
-
- open(MAIL,"|$mailprog -t");
- print MAIL "To: $FORM{'recipient'}\n";
- print MAIL "From: $FORM{'customer_email'} ($FORM{'customer_name'})\n";
- print MAIL "Subject: Order From $FORM{'shopname'}\n";
- print MAIL "\n----------------------------------------\n";
- print MAIL "Below is an order from $FORM{'shopname'}\n";
- print MAIL "Submitted by: $FORM{'customer_name'}\n";
- print MAIL " email: $FORM{'customer_email'}\n";
- print MAIL " date: $date\n";
- print MAIL "----------------------------------------\n\n";
-
- print MAIL "$FORM{'order_email'}\n";
- print MAIL "\n----- $FORM{'ln_payment_method'} -----\n";
-
- if($FORM{'card_type'}) {
- print MAIL "$FORM{'ln_cc_type'}: $FORM{'card_type'}\n";
- print MAIL "$FORM{'ln_cc_name'}: $FORM{'card_name'}\n";
- print MAIL "$FORM{'ln_cc_number'}: $FORM{'card_number'}\n";
- print MAIL "$FORM{'ln_cc_expiry'}: $FORM{'card_exp_month'}\/$FORM{'card_exp_year'}\n";
- } else {
- print MAIL "$FORM{'ln_payment_method'}: $FORM{'payment_method'}\n";
- foreach $key (keys %FORM) {
- if($key =~ "field_") {
- $temp = $key;
- $temp =~ s/field_//g;
- print MAIL "$temp: $FORM{$key}\n";
- }
- }
- }
-
- print MAIL "\n----- $FORM{'ln_total'} -----\n";
- print MAIL "$FORM{'ln_total_weight'}: $FORM{'total_weight'}\n";
- print MAIL "$FORM{'ln_purchase_price'}: $FORM{'currency_symbol'}$FORM{'total_ex_tax'}\n";
- print MAIL "$FORM{'ln_total_tax'}: $FORM{'currency_symbol'}$FORM{'tax_value'}\n";
- print MAIL "$FORM{'ln_total_shipping'}: $FORM{'currency_symbol'}$FORM{'shipping_value'}\n";
- print MAIL "$FORM{'ln_total_inc'}: $FORM{'currency_symbol'}$FORM{'total_inc_tax'}\n";
-
- print MAIL "\nBrowser: $ENV{'HTTP_USER_AGENT'}\n";
- print MAIL "Remote Host: $ENV{'REMOTE_HOST'}\n";
- print MAIL "Remote Address: $ENV{'REMOTE_ADDR'}\n";
-
- close (MAIL);
-
- # check for @ symbol before sending email
- if ($FORM{'dont_email_customer'} ne "true") {
- if ($FORM{'customer_email'} =~ "\@") {
- open(MAIL,"|$mailprog -t");
- print MAIL "To: $FORM{'customer_email'}\n";
- print MAIL "From: $FORM{'recipient'} ($FORM{'shopname'})\n";
- print MAIL "Subject: Order Confirmation From $FORM{'shopname'}\n";
- print MAIL "\n----------------------------------------\n";
- print MAIL "Below is an order from $FORM{'shopname'}\n";
- print MAIL "Submitted by: $FORM{'customer_name'}\n";
- print MAIL " email: $FORM{'customer_email'}\n";
- print MAIL " date: $date\n";
- print MAIL "----------------------------------------\n\n";
-
- print MAIL "$FORM{'order_email'}\n";
-
- print MAIL "\n----- $FORM{'ln_total'} -----\n";
- print MAIL "$FORM{'ln_total_weight'}: $FORM{'total_weight'}\n";
- print MAIL "$FORM{'ln_purchase_price'}: $FORM{'currency_symbol'}$FORM{'total_ex_tax'}\n";
- print MAIL "$FORM{'ln_total_tax'}: $FORM{'currency_symbol'}$FORM{'tax_value'}\n";
- print MAIL "$FORM{'ln_total_shipping'}: $FORM{'currency_symbol'}$FORM{'shipping_value'}\n";
- print MAIL "$FORM{'ln_total_inc'}: $FORM{'currency_symbol'}$FORM{'total_inc_tax'}\n";
-
- print MAIL "\nBrowser: $ENV{'HTTP_USER_AGENT'}\n";
- print MAIL "Remote Host: $ENV{'REMOTE_HOST'}\n";
- print MAIL "Remote Address: $ENV{'REMOTE_ADDR'}\n";
- close (MAIL);
- }
- }
-
- }
-
- sub print_html {
- print "Content-type: text/html\n\n";
-
- print "<html";
- if ($CONFIG{'html_lang'}) {
- print " lang=\"$CONFIG{'html_lang'}\"";
- }
- if ($CONFIG{'html_dir'}) {
- print " dir=\"$CONFIG{'html_dir'}\"";
- }
- print ">\n";
- print "<head>\n";
- if ($CONFIG{'http_charset'}) {
- print "<meta http-equiv=\"Content-Type\" content=\"text/html; charset=$CONFIG{'http_charset'}\">\n";
- }
- print "<meta http-equiv=\"refresh\" content=\"3;url=$FORM{'thankyou_url'}\">\n";
- print "</head>\n";
- print "<body";
- &body_attributes;
- print ">\n";
- print "<center><img src=\"lockssl-on.gif\"></center><br>\n";
- print "<br><br><br><br><center>\n";
- print "<font size=\"+2\">$FORM{'ln_secure_final'}.</font><br><br>\n";
- print "<font size=\"-1\"><a href=\"$FORM{'thankyou_url'}\">$FORM{'ln_next'}</a></font>\n";
- print "</center>";
- print "</body>\n</html>";
- }
-
- sub redirect {
- print "Location: $FORM{'thankyou_url'}\n\n";
- }
-
- sub check_referer {
- if ($ENV{'HTTP_REFERER'}) {
- foreach $referer (@referers) {
- if ($ENV{'HTTP_REFERER'} =~ /$referer/i) {
- $referer_ok = '1';
- last;
- }
- }
- } else {
- $referer_ok = '1';
- }
-
- if ($referer_ok != 1) {
- &error('bad_referer');
- }
- }
-
- sub check_required {
- foreach $require (@required) {
- if ($require eq 'bgcolor' ||
- $require eq 'background' ||
- $require eq 'text_color' ||
- $require eq 'link_color' ||
- $require eq 'alink_color' ||
- $require eq 'vlink_color') {
- if (!($CONFIG{$require}) || $CONFIG{$require} eq ' ') {
- push(@ERROR, $require);
- }
- } elsif (!($FORM{$require}) || $FORM{$require} eq ' ') {
- push(@ERROR, $require);
- }
- }
- if (@ERROR) {
- &error('missing_fields', @ERROR);
- }
- }
-
- sub parse_form {
-
- if ($ENV{'REQUEST_METHOD'} =~ 'GET') {
- @pairs = split(/&/, $ENV{'QUERY_STRING'}); # Split the name-value pairs
- } elsif ($ENV{'REQUEST_METHOD'} =~ 'POST') {
- read(STDIN, $buffer, $ENV{'CONTENT_LENGTH'}); # Get the input
- @pairs = split(/&/, $buffer); # Split the name-value pairs
- } else {
- &error('request_method');
- }
-
- foreach $pair (@pairs) {
- ($name, $value) = split(/=/, $pair); # Split pair into name and value
-
- $name =~ tr/+/ /; # un-URL-encode the name
- $name =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
- $value =~ tr/+/ /; # un-URL-encode the value
- $value =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
-
- $value =~ s/<!--(.|\n)*-->//g; # remove possible SSI directives from value
-
- if ($name eq 'http_charset' ||
- $name eq 'html_lang' ||
- $name eq 'html_dir' ||
- $name eq 'bgcolor' ||
- $name eq 'background' ||
- $name eq 'text_color' ||
- $name eq 'link_color' ||
- $name eq 'alink_color' ||
- $name eq 'vlink_color' && ($value)) {
- $CONFIG{$name} = $value;
- } else {
- if ($FORM{$name} && ($value)) {
- $FORM{$name} = "$FORM{$name}, $value";
- } elsif ($value) {
- $FORM{$name} = $value;
- }
- }
- }
- }
-
- sub error {
- ($error, @error_fields) = @_;
-
- print "Content-type: text/html\n\n";
- print "<html>\n<body";
- &body_attributes;
- print ">\n";
-
- if ($error eq 'bad_referer') {
- print "<center>\n<h1>Bad Referrer - Access Denied</h1>\n</center>\n";
- print "The form that is trying to use this CGI application\n";
- print "resides at: $ENV{'HTTP_REFERER'}, which is not allowed access.\n";
- } elsif ($error eq 'request_method') {
- print "<center>\n<h1>Error: Request Method</h1>\n</center>\n";
- print "The Request Method of the submitted form did not match\n";
- print "either GET or POST.<p>\n";
- } elsif ($error eq 'missing_fields') {
- print "<center>\n<h1>Error: Missing Fields</h1>\n</center>\n";
- print "The following fields require values:<p>\n";
- print "<ul>\n";
- foreach $missing_field (@error_fields) {
- print "<li>$missing_field\n";
- }
- print "</ul>\n";
- }
-
- print "<p><hr size=\"2\"></p>\n";
- print "<center><a href=\"$ENV{'HTTP_REFERER'}\">Go back</a>\n";
- print "</body>\n</html>\n";
-
- exit;
- }
-
- sub body_attributes {
- if ($CONFIG{'bgcolor'}) {
- print " bgcolor=\"$CONFIG{'bgcolor'}\"";
- }
- if ($CONFIG{'background'} =~ /http\:\/\/.*\..*/) {
- print " background=\"$CONFIG{'background'}\"";
- }
- if ($CONFIG{'link_color'}) {
- print " link=\"$CONFIG{'link_color'}\"";
- }
- if ($CONFIG{'vlink_color'}) {
- print " vlink=\"$CONFIG{'vlink_color'}\"";
- }
- if ($CONFIG{'alink_color'}) {
- print " alink=\"$CONFIG{'alink_color'}\"";
- }
- if ($CONFIG{'text_color'}) {
- print " text=\"$CONFIG{'text_color'}\"";
- }
- }
-